Abstract
Laboratorio elaborado por Chelsi Arelí Sedano Gómez para la materia de Microestructuras y Sistemas de Trading impartida por el profesor Omar Antonio Villalobos Ramos.
Este laboratorio tiene como propósito usar información del Libro de Ordenes de Criptomonedas de diversos exchanges internacionales, con el objetivo de entender y visualizar la microestructura del mercado por medio de el comportamiento del Libro de Ordenes y sus características.
Bitcoin existe desde 2009 y la tecnología en la que se basa tiene raíces que se remontan aún más atrás.A pesar de que Bitcoin fue la primera criptodivisa establecida, anteriormente hubo otros intentos por crear monedas en línea con libros de contabilidad asegurados por encriptación. Sin embargo, como nunca se había comercializado, sólo minado, era imposible asignar un valor monetario a las unidades de la emergente criptodivisa hasta que en 2010, alguien decidió vender las suyas por primera vez, cambiando 10.000 de ellas por dos pizzas. A medida que el Bitcoin aumenta su popularidad y la idea de monedas descentralizadas y encriptadas se pone de moda, aparecen las primeras criptodivisas alternativas. Éstas se conocen a veces como altcoin y generalmente intentan mejorar el diseño original de Bitcoin ofreciendo mayor velocidad, anonimato o alguna otra ventaja. Entre las primeras que surgieron están Namecoin y Litecoin. En la actualidad hay más de 1.000 criptomonedas en circulación y con frecuencia aparecen otras nuevas.
**Objetivo general:**
Este laboratorio tiene como propósito particular de visualizar la estructura de mercado de las criptomoneadas.
**Objetivos específicos:**
Consultar información del Libro de Ordenes (LO) de criptomonedas de diversos exchanges.
Obtener el ask.
Obtener el ask-volume.
Obtener el bid.
Obtener el bid-volume
Obtener el VWAP.
Para poder ejecutar este cuaderno, es necesario tener instalado y/o disponer del archivo requirements.txt con lo siguiente:
%%capture
# Install all the pip packages in the requirements.txt
import sys
!{sys.executable} -m pip install -r requirements.txt
import warnings
if not sys.warnoptions:
warnings.simplefilter("ignore")
#Importar librerias
import pandas as pd
import numpy as np
import pickle
from data import order_book # No se pudo ejecutar la funcion de function en jupyter así que se guardo el diccionario
from functions import data_criptomonedas
from visualizations import *
Primero se debe de escoger los exchanges y las cryptomonedas que se desean analizar.
exchanges = ['kraken','ftx','currencycom'] #'coinmate' no estaba funcionando
symbol_e = 'BTC/EUR'
symbol_1 = 'DOGE/USD'
symbol_2 = 'LTC/USD'
symbol_3 = 'XRP/USD'
expected_volume = 0
Ya que no funcionaba la funcion de order_book en el cuaderno de jupyter se decidio guardar la información en formato pickle y de esta manera poder visualizarla aquí mediante un dataframe los exhanges, timestamps, niveles, bid, ask,volumenes, mid-price y VWAP.
#Obtener el diccionario
dic_1= open("dic_1.pkl","rb")
diccionario_1 = pickle.load(dic_1)
#Pasarlo a dataframe
data_DOGEUSD = pd.DataFrame(diccionario_1)
data_DOGEUSD
| Exchanges | dates | levels | bid | ask | volumenes | mid_prices | vwap | |
|---|---|---|---|---|---|---|---|---|
| 0 | kraken | 2021-11-08T19:00:30.762Z | 100 | 2.803481e+06 | 4.306251e+06 | 7.109732e+06 | 0.277627 | 0.277849 |
| 1 | kraken | 2021-11-08T19:00:33.909Z | 100 | 2.806904e+06 | 4.312200e+06 | 7.119104e+06 | 0.277627 | 0.277849 |
| 2 | kraken | 2021-11-08T19:00:37.071Z | 100 | 2.726283e+06 | 4.413266e+06 | 7.139550e+06 | 0.277638 | 0.277871 |
| 3 | kraken | 2021-11-08T19:00:40.131Z | 100 | 2.726283e+06 | 4.413266e+06 | 7.139550e+06 | 0.277638 | 0.277871 |
| 4 | kraken | 2021-11-08T19:00:43.279Z | 100 | 2.752960e+06 | 3.984070e+06 | 6.737030e+06 | 0.277860 | 0.278092 |
| ... | ... | ... | ... | ... | ... | ... | ... | ... |
| 240 | currencycom | 2021-11-08T19:01:22.617Z | 20 | 1.880564e+07 | 3.879147e+07 | 5.759711e+07 | 0.277915 | 0.280289 |
| 241 | currencycom | 2021-11-08T19:01:23.700Z | 20 | 1.880564e+07 | 3.879147e+07 | 5.759711e+07 | 0.277915 | 0.280289 |
| 242 | currencycom | 2021-11-08T19:01:25.213Z | 20 | 1.880564e+07 | 3.879147e+07 | 5.759711e+07 | 0.277915 | 0.280289 |
| 243 | currencycom | 2021-11-08T19:01:26.543Z | 20 | 1.880579e+07 | 3.879147e+07 | 5.759726e+07 | 0.277915 | 0.280289 |
| 244 | currencycom | 2021-11-08T19:01:27.812Z | 20 | 1.880579e+07 | 3.879147e+07 | 5.759726e+07 | 0.277915 | 0.280284 |
245 rows × 8 columns
dic_2= open("dic_2.pkl","rb")
diccionario_2 = pickle.load(dic_2)
#diccionario_2
#Pasarlo a dataframe
data_LTCUSD = pd.DataFrame(diccionario_2)
data_LTCUSD
| Exchanges | dates | levels | bid | ask | volumenes | mid_prices | vwap | |
|---|---|---|---|---|---|---|---|---|
| 0 | kraken | 2021-11-08T19:01:40.291Z | 100 | 6487.810000 | 9584.396000 | 16072.206000 | 227.095 | 227.267532 |
| 1 | kraken | 2021-11-08T19:01:43.400Z | 100 | 6487.810000 | 9584.396000 | 16072.206000 | 227.095 | 227.267532 |
| 2 | kraken | 2021-11-08T19:01:46.569Z | 100 | 6487.810000 | 9584.396000 | 16072.206000 | 227.095 | 227.267532 |
| 3 | kraken | 2021-11-08T19:01:49.673Z | 100 | 6487.810000 | 9584.396000 | 16072.206000 | 227.095 | 227.267532 |
| 4 | kraken | 2021-11-08T19:01:52.821Z | 100 | 6579.025000 | 9178.117000 | 15757.142000 | 227.055 | 227.223437 |
| ... | ... | ... | ... | ... | ... | ... | ... | ... |
| 211 | currencycom | 2021-11-08T19:02:32.948Z | 20 | 3015.100018 | 1876.889996 | 4891.990014 | 227.190 | 226.921116 |
| 212 | currencycom | 2021-11-08T19:02:34.248Z | 20 | 3218.840002 | 2482.309999 | 5701.150001 | 227.010 | 226.509190 |
| 213 | currencycom | 2021-11-08T19:02:35.397Z | 20 | 3015.100018 | 2337.009998 | 5352.110016 | 227.150 | 227.047487 |
| 214 | currencycom | 2021-11-08T19:02:36.688Z | 20 | 2743.840002 | 2481.996000 | 5225.836002 | 227.000 | 227.010921 |
| 215 | currencycom | 2021-11-08T19:02:37.791Z | 20 | 3218.840002 | 2482.309999 | 5701.150001 | 227.010 | 226.509190 |
216 rows × 8 columns
dic_3= open("dic_3.pkl","rb")
diccionario_3 = pickle.load(dic_3)
#diccionario_3
#Pasarlo a dataframe
data_XRPUSD = pd.DataFrame(diccionario_3)
data_XRPUSD
| Exchanges | dates | levels | bid | ask | volumenes | mid_prices | vwap | |
|---|---|---|---|---|---|---|---|---|
| 0 | kraken | 2021-11-08T22:09:29.083Z | 100 | 1.307994e+06 | 1.344958e+06 | 2.652952e+06 | 1.265890 | 1.269576 |
| 1 | kraken | 2021-11-08T22:09:32.129Z | 100 | 1.307994e+06 | 1.344958e+06 | 2.652952e+06 | 1.265890 | 1.269576 |
| 2 | kraken | 2021-11-08T22:09:35.278Z | 100 | 1.335767e+06 | 1.150435e+06 | 2.486202e+06 | 1.265890 | 1.267937 |
| 3 | kraken | 2021-11-08T22:09:38.557Z | 100 | 1.335767e+06 | 1.150435e+06 | 2.486202e+06 | 1.265890 | 1.267937 |
| 4 | kraken | 2021-11-08T22:09:41.727Z | 100 | 1.300583e+06 | 1.209105e+06 | 2.509688e+06 | 1.265930 | 1.268290 |
| ... | ... | ... | ... | ... | ... | ... | ... | ... |
| 205 | currencycom | 2021-11-08T22:10:18.106Z | 20 | 1.392168e+05 | 1.185581e+05 | 2.577749e+05 | 1.265975 | 1.265823 |
| 206 | currencycom | 2021-11-08T22:10:19.536Z | 20 | 1.449844e+05 | 1.278331e+05 | 2.728175e+05 | 1.265975 | 1.265836 |
| 207 | currencycom | 2021-11-08T22:10:21.342Z | 20 | 1.449844e+05 | 1.278331e+05 | 2.728175e+05 | 1.265975 | 1.265836 |
| 208 | currencycom | 2021-11-08T22:10:25.872Z | 20 | 1.401837e+05 | 1.230259e+05 | 2.632097e+05 | 1.265980 | 1.265876 |
| 209 | currencycom | 2021-11-08T22:10:27.673Z | 20 | 1.401837e+05 | 1.230259e+05 | 2.632097e+05 | 1.265980 | 1.265876 |
210 rows × 8 columns
Para comprender mejor los resultados anteriores se realizaron algunas visualizaciones . Además, para que fuera más sencilla la visualización lo que se hizo fueron subplots con la microestructura de cada asset y con diferentes colores se identifico cada exchange.
#Primera
graficas_DOGEUSD= grf_criptomonedas(data_DOGEUSD)
graficas_DOGEUSD.update_layout(title='Symbol DOG/USD')
graficas_DOGEUSD.show()
#Segunda
graficas_LTCUSD= grf_criptomonedas(data_LTCUSD)
graficas_LTCUSD.update_layout(title='Symbol LTC/USD')
graficas_LTCUSD.show()
#Tercera
graficas_XRPUSD= grf_criptomonedas(data_XRPUSD)
graficas_XRPUSD.update_layout(title='Symbol XRP/USD')
graficas_XRPUSD.show()
A largo de este laboratorio, lo que se buscaba era observar las características de el libro de órdenes de cada asset, recordando que un libro de órdenes es una lista de operaciones, que una bolsa utiliza para registrar el interés del mercado en un valor específico o instrumento financiero en este caso de las criptomonedas que se analizaron, estas se cotizan normalmente en un libro de órdenes por volumen y por nivel de precios.También pueden identificar a los compradores y vendedores detrás de cada mercado en concreto.
Entonces lo primero que se realizo fue escoger los exchanges de donde se iba a obtener la información el primero fue
Kraken que es un banco y bolsa de criptodivisas con sede en Estados Unidos, fundado en 2011. La bolsa permite negociar entre criptodivisas y monedas fiduciarias, y proporciona información de precios a la terminal Bloomberg.
Ftx que es una plataforma de intercambio de criptodivisas fundada en 2019 con sede en Bahamas que permite a los usuarios comerciar con criptodivisas.
Currencycom que es una compañía de tecnología de blockchain, plataforma de trading de valores tokenizados, que permite a los inversores comerciar, invertir y beneficiarse de la exposición a instrumentos financieros.
Coinmate es otra plataforma de criptomonedas que tiene sus inicios por 2014.
Esta última empezó a fallar pues no nos mostraba la información aparentemente por alguna actualización en su sistema.
Después se escogieron 3 criptomoneadas que fueran relativamente populares.
Dogecoin es una criptodivisa creada por los ingenieros de software Billy Markus y Jackson Palmer,con una capitalización de mercado: 29.000 millones de dólares a 22 de septiembre de 2021.
Litecoin es una criptomoneda peer-to-peer, fue una de las primeras derivaciones de bitcoin o altcoin, que comenzó en octubre de 2011. Con una capitalizacion de mercado $11.9 miles de millones de dólares a agosto 2021.
XRP es un sistema de liquidación bruta en tiempo real, una red de intercambio de divisas y remesas creada por Chris Larsen y Brad Garlinghouse por una empresa tecnológica con sede en Estados Unidos. Con una capitalizacion de mercado $56 miles de millones de dólares a octubre 2021.
Una vez escogida esta información pudimos obtener los niveles (longitud de cada timestamp), volumen de bid (suma del bid size), volumen de ask (suma del ask size), volumen total (suma del volumen de bid y de ask), mid-prices (suma del bid y del ask en el top of the book) y por último el VWAP (volume-weighted average).
Con las gráficas obtenidas podemos ver que los niveles siempre son los mismos en cada exchange por ejemplo los niveles de Kraken siempre son 100 y los niveles de currencycom y ftx siempre son 20, recordemos que los niveles son los diferentes precios que hay para cada activo para cada timestamp entonces podemos decir que por cada exchange esta límitado el nivel según lo permita.
El volumen es el número de contratos, acciones o lotes de divisas que se negocian durante un período de tiempo determinado.El precio de bid es el mejor precio que se paga por las acciones (y dónde se pueden vender), y el precio de ask es el mejor precio al que se venden las acciones. Por lo tanto, el volumen de bid es el volumen de acciones que la gente quiere comprar y volumen de ask es el volumen de acciones que la gente quiere vender. El volumen total es la suma de estos dos.
Si observamos las graficas de volumenes podemos ver como son diferentes entre si, a pesar de que es el mismo asset el volumen cambia drasticamente de uno a otro. Para el volumen de DOGE/USD tanto de bid como de ask el que más volumen maneja es el de currencycom ya que en el volumen total vemos que tiene alrededor de 60 M mientras que el ftx solo tiene alrededor de 500k. Pero para LTC/USD el que más volumen maneja es Kraken.
Los mid-prices son muy parecidos al contrario de los volumenes recordando que es el promedio de el top of the book.En los tres simbolos tienen un comportamiento parecido. Esto quiere decir que el promedio entre el bid y el ask que se encuentran en el top of the book son muy similares entre si. Los mid-price mas altos los tiene LTC, puede que esto se deba a que lleva más tiempo en el mercado y las personas confían más en esa.
Por último el VWAP muestra la relación entre el precio de un activo y su volumen total de operaciones. Proporciona a operadores e inversores una medida del precio medio al que se negocia un valor a lo largo de un periodo dado de tiempo. Entonces también es muy poco entre los exchanges la diferencia. El que más llama la atención es el de Kraken de XRP/USD pues al inicio tiene una bajada considerable mientras que los otros exchanges no.
En conclusión, podemos decir que a pesar de que el tema de las cryptomonedas es relativamente reciente, ya podemos comprender un poco mejor el mercado y hay varias criptomonedas de las cuales podemos escoger para analizar y así tomar mejores decisiones financieras. También ahora sabemos que el libro de órdenes da mucho más información como la liquidez y los spreads que tiene cada asset, ya tenemos que ver solamente la grafica en Yahoo de como se han movido los precios sino información más atrás que nos muestra otro tipo de información. Por lo mismo de que no es muy antiguo esta manera de operar los precios suelen ser muy volatiles, es por eso que se debe segguir investigando y monioreando los precios de estos.
[1] Munnoz, 2020. Python project template. https://github.com/iffranciscome/python-project. (2021)
[2] Coinmate, 2020. About us https://coinmate.io/en/about_us (2021)
[3] Currency.com, 2020. About us https://currency.com/about (2021)
[4] FTX, 2020. About us https://ftx.com/profile#a=30518592 (2021)
[5] Kraken, 2020. About us https://www.kraken.com/ (2021)
[6] https://www.ig.com/es/glosario-trading/definicion-de-vwap (2021)